#include "volumetool.h"
#include "ui_volumetool.h"

VolumeTool::VolumeTool(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::VolumeTool)
    ,ismuted(false) // 默认静⾳
    ,volumeRatio(45) // 默认⾳量为45%
{
    ui->setupUi(this);
    setWindowFlags(Qt::Popup | Qt::FramelessWindowHint|
                   Qt::NoDropShadowWindowHint);
    // 安装事件过滤器
     ui->volumeBox->installEventFilter(this);
}

VolumeTool::~VolumeTool()
{
    delete ui;
}

int VolumeTool::getvolume()
{
    return volume;
}

void VolumeTool::setVolume()
{
    // 1. 将⿏标的位置转换为sloderBox上的相对坐标，此处只要获取y坐标
     int height = ui->volumeBox->mapFromGlobal(QCursor().pos()).y();
     qDebug()<<height;
     // 2. ⿏标在volumeBox中可移动的y范围在[25, 205之间]
     height = height < 0? 0 : height;
     height = height > 172? 172 : height;
     // 3. 调整sloderBt的位置
     ui->silderBtn->move(ui->silderBtn->x(), height - ui->silderBtn->height()/2);
     // 4. 更新outline的位置和⼤⼩
     ui->outLine->setGeometry(ui->outLine->x(), 0, ui->outLine->width(),height);
     ui->inLine->setGeometry(ui->inLine->x(),height,ui->inLine->width(),172-height);
     // 5. 计算⾳量⽐率
     volumeRatio =100-(int)((int)ui->outLine->height()/(float)172*100);
     // 6. 设置给label显⽰出来
     ui->musicVolume->setText(QString::number(volumeRatio)+"%");
}


void VolumeTool::onSilenceBtnClicked()
{
    ismuted = !ismuted;
    if(ismuted)
    {
        ui->voice->setIcon(QIcon(":/images/silent.png"));
    }
    else
    {
        ui->voice->setIcon(QIcon(":/images/volumn.png"));
    }
    emit setSilence(ismuted);
}

bool VolumeTool::eventFilter(QObject *object, QEvent *event)
{
    // 过滤volumeBox上的事件
     if(object == ui->volumeBox)
     {
     if(event->type() == QEvent::MouseButtonPress)
     {
     // 如果是⿏标按下事件，修改sliderBtn和outLine的位置，并计算volumeRation
     setVolume();
     }
     else if(event->type() == QEvent::MouseMove)
     {
     // 如果是⿏标滚动事件，修改sliderBtn和outLine的位置，并计算volumeRation，
     setVolume();
     // 并发射setMusicVolume信号
     emit setMusicVolume(volumeRatio);
     }else if(event->type() == QEvent::MouseButtonRelease)
     {
     // 如果是⿏标释放事件，直接发射setMusicVolume信号
     emit setMusicVolume(volumeRatio);
     }

     return true;
     }

     return QObject::eventFilter(object, event);
}

void VolumeTool::on_voice_clicked()
{
    onSilenceBtnClicked();
}



